#!/bin/bash

# 定义源目录和目标目录
##SOURCE_DIR="/home/git/www/images-show/"
TARGET_DIR="/var/www/docs/images_show/"
LOG_FILE="/home/git/www/git_backup.log"

log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE"
    echo "$1"
}

# 检查 /dev/sda1 是否挂载到 /mnt/sda1
is_mounted() {
    findmnt -n -o TARGET "/dev/sda1" | grep -q "^/mnt/sda1$"
}

# 检查 /mnt/sdb1/git/www 是否存在
if is_mounted && [ -d "/mnt/sda1/git/www/images-show/" ]; then
    SOURCE_DIR="/mnt/sda1/git/www/images-show/"
else
    log "没有mount /dev/sda1,或者不存在/mnt/sda1/git/www/images-show/目录"
    exit 1
fi

# 确保目标目录存在
mkdir -p "$TARGET_DIR"

# 检查是否有文件差异（使用 rsync --dry-run）
echo "检查文件差异..."

CHANGES=$(rsync -ani --delete --no-perms --no-owner --no-group "$SOURCE_DIR" "$TARGET_DIR" | wc -l)

if [ "$CHANGES" -gt 0 ]; then
    log "检测到 $CHANGES 个文件变更，开始备份..."

    # 暂停 Nginx 服务
    log "暂停 Nginx 服务..."
    systemctl stop nginx

    # 执行真实备份
    rsync -av --delete \
        --chown=www-data:www-data \
        --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r \
        "$SOURCE_DIR" "$TARGET_DIR"

    # 修复权限（保险措施）
    find "$TARGET_DIR" -type d -exec chmod 755 {} \;
    find "$TARGET_DIR" -type f -exec chmod 644 {} \;
    chown -R www-data:www-data "$TARGET_DIR"

    # 恢复 Nginx 服务
    log "恢复 Nginx 服务..."
    systemctl start nginx

    log "备份完成，Nginx 服务已恢复。"
else
    log "没有检测到文件变更，跳过备份。"
fi